package modulos.projeto.mbeans;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import moduloRemoto.bo.enumerador.LookUpEnum;
import moduloRemoto.bo.interfaces.ProjetoRemote;
import moduloRemoto.bo.interfaces.TarefaRemote;
import moduloRemoto.pojo.Atividade;
import moduloRemoto.pojo.Projeto;
import moduloRemoto.pojo.Tarefa;
import modulos.util.ServiceLocator;
import modulos.util.Util;


public class TarefaMB
{	
	private TarefaRemote tarefaBO;
	private ProjetoRemote projetoBO;
	
	private Tarefa tarefa = new Tarefa();
	private Atividade atividade = new Atividade();

	private String currentPage;


	public TarefaMB()
	{

		try
		{
			setCurrentPage("cronograma.jsp");

			tarefaBO = (TarefaRemote)ServiceLocator.getInstance().get(LookUpEnum.TAREFA);
			projetoBO = (ProjetoRemote)ServiceLocator.getInstance().get(LookUpEnum.PROJETO);
		}
		catch(Exception ex)
		{
			System.out.println("Erro ao acessar o servidor remoto " + ex.getMessage());
		}
	}


	public String salvarTarefa()
	{	
		try{
			
			if(getTarefa().getIdTar() == 0)
			{			
				/** Estado inicial da tarefa */
				getTarefa().setStatusTar(Tarefa.STATUS_AGUARDANDO_ATIVIDADES);			
			}				
	
			Projeto proj = projetoBO.carregarObjeto((Integer)Util.getSessionProperty("idPro"));		
			getTarefa().setProjetoTar(proj);
			
			tarefaBO.persistir(getTarefa());
			
			return "ok";
		}
		catch(Exception ex){
			FacesContext.getCurrentInstance().addMessage("cadastroTarefa", new FacesMessage("Erro ao salvar tarefa"));
			return "erro";

		}
		
		
	}


	public void excluirTarefa(ActionEvent event)
	{
		UIParameter component = (UIParameter) event.getComponent().findComponent("idTarefaDel");
		Integer idTarefa = ((Integer)component.getValue());

		if(idTarefa != null)
			tarefaBO.excluir(idTarefa);
	}


	public void  selecionarTarefa(ActionEvent event)
	{
		UIParameter component = (UIParameter) event.getComponent().findComponent("idTarefa");
		Integer idTarefa = ((Integer)component.getValue());

		Tarefa tarefa = tarefaBO.carregarObjeto(idTarefa);

		if(tarefa != null)
			setTarefa(tarefa);
	}


	public String redirect()
	{
		return "redirectTarefa";
	}


	public void incluirAtividade()
	{
		Atividade ati = getAtividade();
	}


	/**
	 * Recupera uma Listagem de Projetos
	 * @return Lista de Projetos
	 */
	public List<Tarefa> getListaTarefas()
	{
		return tarefaBO.getTarefasByProjeto((Integer)Util.getSessionProperty("idPro"));
	}	


	/** Getters and Setters */
	public Tarefa getTarefa()
	{
		return tarefa;
	}

	public void setTarefa(Tarefa tarefa)
	{
		this.tarefa = tarefa;
	}

	public Atividade getAtividade()
	{
		return atividade;
	}

	public void setAtividade(Atividade atividade)
	{
		this.atividade = atividade;
	}

	public String getCurrentPage()
	{
		return currentPage;
	}

	public void setCurrentPage(String currentPage)
	{
		this.currentPage = currentPage;
	}
}